Como utilizar diodos IR (receptor y emisor) como un sensor.
Se pueden utilizar de dos maneras:
Si los vamos a usar en paralelo se pueden comprar algunos sensores con el emisor y el receptor ya montados en una carcasa:
El circuito más típico es el siguiente, usando un transistor para amplificar la señal del receptor IR.
El circuito tiene 3 partes:
El diodo receptor IR funciona de manera que al recibir luz infrarroja varía su resistencia. Si no hay luz IR el transistor no se activa, porque el voltaje que hay en el divisor (la resistencia de 10K) necesitamos que sea igual al voltaje que caerá entre la base y el emisor de transistor más el voltaje del led (0,7v del transistor + 2,6v del led), en una situación normal el diodo receptor de IR recibe una poca luz infrarroja del ambiente (del sol mayormente si estamos de día), esto hace que el receptor de IR tenga una resistencia de unos 500k ohm (aproximadamente), por lo tanto la mayor parte del voltaje caerá en el receptor de IR y una pequeña parte en la resistencia de 10K, el voltaje no es suficiente como para activar el transistor, cuando el receptor de IR recibe más luz infrarroja la resistencia de este baja y el voltaje que cae en la resistencia de 10K aumenta, haciendo que el transistor se active.
El diodo receptor IR se coloca en el circuito de manera inversa (catodo a positivo y anodo a negativo), si se coloca al reves funciona igualmente pero es menos sensible.
La resistencia de 10K ohm afecta a cuanto de sensible será el circuito a la hora de activar el transistor, si ponemos una resistencia de 100k ohm necesitarémos menos luz infrarroja para que se encienda el led.
Si cambiamos la resistencia de 10K ohm y el diodo receptor de IR de posición entre ellos (resistencia arriba y diodo abajo), el circuito funciona al reves, el led se queda encendido y se apaga cuando el diodo receptor de IR recibe luz infrarroja.
Si ponemos el diodo receptor de IR en serie con una resistencia y un led, esto funcionaría, pero no exactamente como en este circuito, aquí el led se quedaría un poco encendido constantemente y al recibir el diodo IR mas luz infrarroja el led brillaría más, a diferencia del circuito con el transistor, donde el led está siempre apagado y se va encendiendo a medida que aumenta la luz infraroja.
NOTA: la luz solar tiene mucha radiación infrarroja, si el diodo receptor de IR está expuesto al sol puede no funcionar como esperamos ya que el ambiente está saturado con luz IR.
El circuito es prácticamente el mismo que el anterior, pero en este caso la salida del divisor de voltaje la conectamos al puerto ADC0 del microcontrolador y el led lo conectamos a la salida PB1, el led en este caso lo iluminaremos por completo (no gradualmente como antes), cuando la lectura del ADC pase cierto valor, 300 en este caso.
El circuito sería tal que así:
Y el código sería el siguiente:
#include <avr/io.h>
void ADC_init() {
ADMUX |= (1 << REFS0);
ADCSRA |= (1 << ADPS0) | (1 << ADPS1);
ADCSRA |= (1 << ADEN);
ADCSRA |= (1 << ADATE); // Activamos auto trigger del ADC (Por defecto el modo es el free-run)
ADCSRA |= (1 << ADSC); // Iniciamos la primera conversión (a partir de aqui el free-run se ejecutara de manera automatica)
}
int main(void) {
DDRB = (1 << PB1);
ADC_init();
while (1) {
if(ADC > 300){
PORTB |= (1 << PB1);
}
else{
PORTB = 0;
}
}
}
No deberíamos de usar un dispositivo que genera una señal analógica en una entrada digital, pero podemos hacerlo siempre y cuando tengamos un circuito que genere unas grandes diferencias en las lecturas analógicas, para que la entrada digital lea 1 el valor de la señal analógica tiene que ser mayor que VCC/2 (la mitad de la corriente de alimentación del microcontrolador). Esto se puede dar por ejemplo si enfrentamos el diodo receptor y el emisor para detectar objetos que pasen por el medio, ya que cuando un objeto se cruza entre los dos diodos bloquea la señal completamente y la lectura será cercana a 0 y, cuando no se bloquea la señal, la lectura será cercana al máximo (1023 para la lectura analógica), si llevamos esta situación a las lecturas que haría el ADC leería 0 cuando el valor del ADC sea menor de 512 y 1 cuando sea mayor, por lo tanto este escenario es igual que usar el ADC pero de manera mas simplificada.
En este caso conectamos el divisor de voltaje a la entrada PB2
El circuito sería tal que así:
Y el código sería el siguiente:
#include <avr/io.h>
int main(void) {
DDRB = (1 << PB1); //PB1 como salida
while (1) {
if(bit_is_set(PINB, PB2))
PORTB |= (1 << PB1);
else
PORTB = 0;
}
}
AVR | Diodo | IR | Infrarrojo